﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MJM.RPP.EntidadesNegocio;
using System.Data.SqlClient;
using System.Data;

namespace MJM.RPP.AccesoDatos
{
    public class AgendaMunicipalAD
    {
        public int Insertar(AgendaMunicipalEN obj)
        { 
            int Codigo=0;
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_i_T_WEB_DEPARE_Insertar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmNombre, prmIdArea, prmIdDependencia,prmDireccion,prmOrden;
            try
            {
                prmNombre = cmd.CreateParameter();
                prmNombre.ParameterName = "@vDEPARE_chNOMDEP";
                prmNombre.SqlDbType = SqlDbType.VarChar;
                prmNombre.Value = obj.DEPARE_chNOMDEP;
                cmd.Parameters.Add(prmNombre);

                prmOrden = cmd.CreateParameter();
                prmOrden.ParameterName = "@vDEPARE_inORDDEP";
                prmOrden.SqlDbType = SqlDbType.Int;
                prmOrden.Value = obj.DEPARE_inORDDEP;
                cmd.Parameters.Add(prmOrden);

                prmIdArea = cmd.CreateParameter();
                prmIdArea.ParameterName = "@vOFIC_P_inCODOFI";
                prmIdArea.SqlDbType = SqlDbType.Int;
                prmIdArea.Value = obj.OFIC_P_inCODOFI;
                cmd.Parameters.Add(prmIdArea);

                prmDireccion = cmd.CreateParameter();
                prmDireccion.ParameterName = "@vDEPARE_chDIRDEP";
                prmDireccion.SqlDbType = SqlDbType.VarChar;
                prmDireccion.Value = obj.DEPARE_chDIRDEP;
                cmd.Parameters.Add(prmDireccion);

                prmIdDependencia = cmd.CreateParameter();
                prmIdDependencia.Direction = ParameterDirection.ReturnValue;
                prmIdDependencia.SqlDbType = SqlDbType.Int;                
                cmd.Parameters.Add(prmIdDependencia);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                Codigo = Convert.ToInt32(prmIdDependencia.Value);
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                Codigo = 0;
                cmd.Dispose();
                conn.Dispose();
            }

            return Codigo;
        }

        public List<AgendaMunicipalEN> Listar()
        {
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_WEB_DEPARE_Listar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader dr;
            List<AgendaMunicipalEN> lst = new List<AgendaMunicipalEN>();
            try
            {
                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                AgendaMunicipalEN obj;
                while (dr.Read())
                {
                    obj = new AgendaMunicipalEN();
                    obj.DEPARE_P_inID = dr.GetInt32(0);
                    obj.OFIC_P_inCODOFI = dr.GetInt32(1);
                    obj.DEPARE_chNOMDEP = dr.GetString(2);
                    obj.DEPARE_chDIRDEP = dr.GetString(3);
                    obj.DEPARE_inFLAELI = dr.GetInt32(4);
                    obj.DEPARE_inORDDEP = dr.GetInt32(5);
                    lst.Add(obj);
                }

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return lst;
        }

        public int Modificar(AgendaMunicipalEN obj)
        {
            int codigo = 0;
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_u_T_WEB_DEPARE_Actualizar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmNombre, prmIdArea, prmIdDependencia, prmDireccion, prmEliminar, prmOrden;

            try
            {
                prmNombre = cmd.CreateParameter();
                prmNombre.ParameterName = "@vDEPARE_chNOMDEP";
                prmNombre.SqlDbType = SqlDbType.VarChar;
                prmNombre.Value = obj.DEPARE_chNOMDEP;
                cmd.Parameters.Add(prmNombre);

                prmIdArea = cmd.CreateParameter();
                prmIdArea.ParameterName = "@vOFIC_P_inCODOFI";
                prmIdArea.SqlDbType = SqlDbType.Int;
                prmIdArea.Value = obj.OFIC_P_inCODOFI;
                cmd.Parameters.Add(prmIdArea);

                prmOrden = cmd.CreateParameter();
                prmOrden.ParameterName = "@vDEPARE_inORDDEP";
                prmOrden.SqlDbType = SqlDbType.Int;
                prmOrden.Value = obj.DEPARE_inORDDEP;
                cmd.Parameters.Add(prmOrden);

                prmEliminar = cmd.CreateParameter();
                prmEliminar.ParameterName = "@vDEPARE_inFLAELI";
                prmEliminar.SqlDbType = SqlDbType.Int;
                prmEliminar.Value = obj.DEPARE_inFLAELI;
                cmd.Parameters.Add(prmEliminar);

                prmDireccion = cmd.CreateParameter();
                prmDireccion.ParameterName = "@vDEPARE_chDIRDEP";
                prmDireccion.SqlDbType = SqlDbType.VarChar;
                prmDireccion.Value = obj.DEPARE_chDIRDEP;
                cmd.Parameters.Add(prmDireccion);

                prmIdDependencia = cmd.CreateParameter();
                prmIdDependencia.ParameterName = "@vDEPARE_P_inID";
                prmIdDependencia.SqlDbType = SqlDbType.Int;
                prmIdDependencia.Value = obj.DEPARE_P_inID;
                cmd.Parameters.Add(prmIdDependencia);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                codigo = 1;
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                codigo = 0;
                cmd.Dispose();
                conn.Dispose();
            }

            return codigo;
        }
    }
}
